User Authentication (ব্যবহারকারী প্রমাণীকরণ) হল অ্যাপ্লিকেশনে ব্যবহারকারীদের সনাক্ত করার প্রক্রিয়া। এটি সাধারণত username/password, OAuth, অথবা JWT (JSON Web Tokens) এর মাধ্যমে পরিচালিত হয়। ExtJS ফ্রেমওয়ার্ক ব্যবহার করে আপনি একটি কার্যকরী ইউজার অথেনটিকেশন সিস্টেম তৈরি করতে পারেন যা ফ্রন্টএন্ড এবং ব্যাকএন্ডের মধ্যে ইন্টিগ্রেশন তৈরি করবে।
এখানে, আমরা ExtJS ব্যবহার করে একটি সিম্পল ইউজার অথেনটিকেশন সিস্টেম তৈরি করার জন্য প্রয়োজনীয় পদক্ষেপ আলোচনা করব।
প্রথমে, একটি লগইন ফর্ম তৈরি করতে হবে যা ব্যবহারকারীর username এবং password ইনপুট নেবে। এই ফর্মটির মাধ্যমে ইউজার ইনপুট প্রক্রিয়া হবে এবং এরপর সেই তথ্য সার্ভারে পাঠানো হবে যাচাইয়ের জন্য।
Ext.create('Ext.form.Panel', {
title: 'Login Form',
width: 350,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [
{
xtype: 'textfield',
name: 'username',
fieldLabel: 'Username',
allowBlank: false // ইউজারনেম অবশ্যই দিতে হবে
},
{
xtype: 'textfield',
name: 'password',
fieldLabel: 'Password',
inputType: 'password',
allowBlank: false // পাসওয়ার্ড অবশ্যই দিতে হবে
}
],
buttons: [{
text: 'Login',
handler: function() {
var form = this.up('form').getForm();
if (form.isValid()) {
// Form valid হলে, AJAX রিকোয়েস্ট সার্ভারে পাঠানো হবে
var values = form.getValues();
authenticateUser(values);
}
}
}]
});
এখানে:
allowBlank: false
: এটি নিশ্চিত করবে যে ব্যবহারকারী ইউজারনেম এবং পাসওয়ার্ড ইনপুট করবে।inputType: 'password'
: পাসওয়ার্ড ফিল্ডে সাধারণভাবে টেক্সট আউটপুট না হয়ে পাসওয়ার্ড ফিল্ড হিসেবে প্রদর্শিত হবে।ইউজার তথ্য যাচাইয়ের জন্য আমরা একটি authenticateUser()
ফাংশন তৈরি করব, যা সার্ভারে লগইন তথ্য পাঠাবে এবং সার্ভার থেকে সাড়া গ্রহণ করবে। সাধারণত এটি AJAX রিকোয়েস্টের মাধ্যমে করা হয়।
function authenticateUser(userData) {
Ext.Ajax.request({
url: 'authenticate.php', // সার্ভারে রিকোয়েস্ট পাঠানোর URL
method: 'POST',
params: userData, // ইউজার ইনপুট পাঠানো
success: function(response) {
var result = Ext.decode(response.responseText);
if (result.success) {
Ext.Msg.alert('Success', 'Login successful!');
// এরপর আপনি ইউজারকে ড্যাশবোর্ড বা হোমপেজে পাঠাতে পারেন
} else {
Ext.Msg.alert('Failure', 'Invalid credentials');
}
},
failure: function(response) {
Ext.Msg.alert('Error', 'Server error occurred');
}
});
}
এখানে:
Ext.Ajax.request()
ব্যবহার করে সার্ভারের কাছে রিকোয়েস্ট পাঠানো হচ্ছে।success
মেসেজ দেখানো হবে এবং ব্যর্থ হলে failure
মেসেজ দেখানো হবে।সার্ভারে ইউজার অথেনটিকেশন করা হয় সাধারণত ডাটাবেসের মাধ্যমে, যেখানে ইউজারের তথ্য যাচাই করা হয়। নিচে একটি PHP উদাহরণ দেওয়া হচ্ছে যা username এবং password যাচাই করবে।
<?php
// authenticate.php
$username = $_POST['username'];
$password = $_POST['password'];
// ডাটাবেস সংযোগ (MySQLi বা PDO ব্যবহার করে)
$conn = new mysqli("localhost", "root", "", "mydatabase");
// ব্যবহারকারীর তথ্য যাচাই করা
$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// ইউজার পাওয়া গেলে, লগইন সফল
echo json_encode(['success' => true]);
} else {
// ইউজার না পাওয়া গেলে, লগইন ব্যর্থ
echo json_encode(['success' => false]);
}
$conn->close();
?>
এখানে:
$_POST['username']
এবং $_POST['password']
দিয়ে ইউজারের ইনপুট গ্রহণ করা হচ্ছে।json_encode()
দিয়ে সার্ভার রেসপন্স JSON ফরম্যাটে পাঠানো হচ্ছে, যাতে ফ্রন্টএন্ডে তা সহজে পার্স করা যায়।এটি একটি উন্নত অথেনটিকেশন পদ্ধতি যেখানে সার্ভার ইউজারকে একটি JWT Token প্রদান করে, যা পরবর্তী রিকোয়েস্টের মাধ্যমে প্রমাণীকরণের জন্য ব্যবহৃত হয়।
<?php
// jwt-encode.php
use \Firebase\JWT\JWT;
$key = "secret_key"; // সিক্রেট কীগুলি একে অপরের মধ্যে সুরক্ষিত হওয়া উচিত
$issuedAt = time();
$expirationTime = $issuedAt + 3600; // টোকেনের মেয়াদ এক ঘণ্টা
$payload = array(
"iat" => $issuedAt,
"exp" => $expirationTime,
"username" => $username
);
// JWT এনকোড করা
$jwt = JWT::encode($payload, $key);
echo json_encode(["token" => $jwt]);
?>
<?php
// jwt-decode.php
use \Firebase\JWT\JWT;
$key = "secret_key";
$jwt = $_GET['token']; // ক্লায়েন্ট থেকে JWT নেওয়া হচ্ছে
try {
// টোকেন ডিকোড করা
$decoded = JWT::decode($jwt, $key, array('HS256'));
echo json_encode(['success' => true, 'data' => $decoded]);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => 'Invalid Token']);
}
?>
এখানে:
ক্লায়েন্ট সাইডে, আপনি টোকেনটি লোকালস্টোরেজ বা সেশন স্টোরেজে সংরক্ষণ করতে পারেন এবং পরবর্তী রিকোয়েস্টে টোকেন পাঠাতে পারেন।
// লগইন সফল হলে টোকেন সংগ্রহ করা
localStorage.setItem('auth_token', response.token);
// পরবর্তী রিকোয়েস্টে টোকেন পাঠানো
var token = localStorage.getItem('auth_token');
Ext.Ajax.request({
url: 'jwt-decode.php?token=' + token,
method: 'GET',
success: function(response) {
var result = Ext.decode(response.responseText);
if (result.success) {
// টোকেন ভ্যালিড হলে, ইউজারকে ড্যাশবোর্ডে পাঠানো হবে
} else {
Ext.Msg.alert('Error', 'Invalid Token');
}
}
});
এই পদ্ধতিগুলি ব্যবহার করে আপনি একটি শক্তিশালী এবং সুরক্ষিত User Authentication সিস্টেম তৈরি করতে পারবেন।
Read more